﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using Telerik.Web.Mvc.UI;
using Telerik.Web.Mvc.UI.Fluent;
using XStudio.XCRF.Web.Models.Enums;
using XStudio.XCRF.Data.Entities.CureInfo;

namespace XStudio.XCRF.Web.Extensions
{
    /// <summary>
    /// 展示模板扩展
    /// </summary>
    public static class DisplayExtensions
    {
        /// <summary>
        /// 展示用户类型
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString MemberTypeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "MemberType");
        }
        /// <summary>
        /// 展示性别
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString GenderDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Gender");
        }
        /// <summary>
        /// 婚姻状况展示
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString MarriageDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Marriage");
        }
        /// <summary>
        /// 展示日期
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString DateDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Date");
        }
        /// <summary>
        /// 展示病例来源
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString SourceTypeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "SourceType");
        }

        /// <summary>
        /// 展示沉脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString DeepPulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "DeepPulseClass");
        }
        /// <summary>
        /// 展示实脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString ExcessPulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "ExcessPulseClass");
        }
        /// <summary>
        /// 展示虚脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString FeeblePulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FeeblePulseClass");
        }
        /// <summary>
        /// 展示浮脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString FloatingPulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FloatingPulseClass");
        }
        /// <summary>
        /// 展示数脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString RapidPulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "RapidPulseClass");
        }
        /// <summary>
        /// 展示迟脉类
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString SlowPulseClassDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "SlowPulseClass");
        }
        /// <summary>
        /// 展示苔质
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString FurCharacterDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FurCharacter");
        }
        /// <summary>
        /// 展示苔色
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString FurColorDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FurColor");
        }
        /// <summary>
        /// 展示舌色
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TongueColorDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "TongueColor");
        }
        /// <summary>
        /// 展示舌形
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TongueShapeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "TongueShape");
        }
        /// <summary>
        /// Mark
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString MarkDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Mark");
        }
        /// <summary>
        /// 展示舌态
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TongueStatusDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "TongueStatus");
        }
        /// <summary>
        /// 癌肿部位选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TumorPlaceDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "TumorPlace");
        }
        /// <summary>
        /// 病理学类型选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString PathologyTypeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "PathologyType");
        }
        /// <summary>
        /// 浸润部位选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString InfiltrationPlaceDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "InfiltrationPlace");
        }
        /// <summary>
        /// 分化选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString SplitDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Split");
        }
        /// <summary>
        /// 淋巴结转移选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString LymphMoveDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "LymphMove");
        }
        /// <summary>
        /// 上切缘选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TopCutEdgeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "TopCutEdge");
        }
        /// <summary>
        /// 下切缘选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString BottomCutEdgeDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "BottomCutEdge");
        }
        /// <summary>
        /// 脉管内癌栓选择器
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="TProperty"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString PulseEmbolusDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "PulseEmbolus");
        }

        /// <summary>
        /// 展示单症名称
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString DiseaseDisplayFor<TModel>(this HtmlHelper<TModel> html, Expression<Func<TModel, IEnumerable<Disease>>> expression)
        {
            return html.DisplayFor(expression, "Diseases");
        }

        /// <summary>
        /// 复发转移情况
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="html"></param>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static MvcHtmlString TransDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "Transfer");
        }

        /// <summary>
        /// 有无
        /// </summary>
        public static MvcHtmlString YouWuDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "YouWu");
        }

        /// <summary>
        /// 便质
        /// </summary>
        public static MvcHtmlString BZDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "BZ");
        }

        /// <summary>
        /// 尿色
        /// </summary>
        public static MvcHtmlString NSDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "NS");
        }

        /// <summary>
        /// 尿量
        /// </summary>
        public static MvcHtmlString NLDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "NL");
        }

        /// <summary>
        /// 耳鸣
        /// </summary>
        public static MvcHtmlString EMDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "EM");
        }

        /// <summary>
        /// 食欲
        /// </summary>
        public static MvcHtmlString SYDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "SY");
        }

        /// <summary>
        /// 腹胀
        /// </summary>
        public static MvcHtmlString FZDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FZ");
        }

        /// <summary>
        /// 腹痛拒按
        /// </summary>
        public static MvcHtmlString FTJADisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FTJA");
        }

        /// <summary>
        /// 面色
        /// </summary>
        public static MvcHtmlString MSDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "MS");
        }

        /// <summary>
        /// 口味
        /// </summary>
        public static MvcHtmlString KWDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "KW");
        }

        /// <summary>
        /// 腰痛性质
        /// </summary>
        public static MvcHtmlString YTXZDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "YTXZ");
        }

        /// <summary>
        /// 腹痛
        /// </summary>
        public static MvcHtmlString FTDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FT");
        }

        /// <summary>
        /// 腹痛位置
        /// </summary>
        public static MvcHtmlString FTWZDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
        {
            return html.DisplayFor(expression, "FTWZ");
        }
    }
}